package com.duguang.baseanimation.ui.canvas.chart.charts;
import java.util.ArrayList;
import android.app.Fragment;
import android.content.Context;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.GestureDetector;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import com.duguang.baseanimation.R;
import com.duguang.baseanimation.ui.canvas.chart.util.LineView;
import com.duguang.baseanimation.ui.canvas.chart.util.MyHori;
import com.duguang.baseanimation.ui.canvas.chart.util.MyHori.MyHoriListener;
/**
* Created by Dacer on 11/15/13.
*/
public class LineFragment extends Fragment {
private SeekBar sb;
private int dragLenth;
private LineView lineView;
private MyHori hori;
private GestureDetector gestureDetector;
private float lastX;
private float lastY;
private int winWidth;
private OnSeekBarChangeListener sbListener;
private MyHoriListener myHoriListener;
private OnTouchListener touch;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_cancas_chart_fragment_line, container, false);
lineView = (LineView)rootView.findViewById(R.id.line_view);
sb = (SeekBar) rootView.findViewById(R.id.sb);
hori = (MyHori) rootView.findViewById(R.id.horizontalScrollView);
hori.setHorizontalScrollBarEnabled(false);
set(lineView);
sbListener = new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
float x=((float)progress)*dragLenth/(dragLenth+winWidth);
hori.smoothScrollTo(((int)(x+0.5)), 0);
}
};
myHoriListener = new MyHoriListener() {
@Override
public void onScrollChanged(int dx) {
int progress = sb.getProgress();
sb.setProgress(progress+dx);
}
};
touch= new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(v instanceof MyHori){
sb.setOnSeekBarChangeListener(null);
hori.setMyListener(myHoriListener);
}else{
hori.setMyListener(null);
sb.setOnSeekBarChangeListener(sbListener);
}
return false;
}
};
return rootView;
}
@Override
public void onResume() {
new Thread(){
public void run() {
WindowManager winManager=(WindowManager)getActivity().getSystemService(Context.WINDOW_SERVICE);
while(dragLenth==0||winWidth==0){
SystemClock.sleep(10);
winWidth = winManager.getDefaultDisplay().getWidth();
dragLenth = hori.getWidth();
}
sb.setProgress(0);
sb.setMax(dragLenth+winWidth);
setevent();
}
}.start();
super.onResume();
}
private void setevent() {
hori.setOnTouchListener(touch);
sb.setOnTouchListener(touch);
// sb.setOnSeekBarChangeListener(sbListener);
// hori.setMyListener(myHoriListener);
}
private void set(LineView lineView){
ArrayList<String> test = new ArrayList<String>();
ArrayList<Integer> dataList1 = new ArrayList<Integer>();
dataList1.add(21);
dataList1.add(22);
dataList1.add(43);
dataList1.add(25);
dataList1.add(21);
dataList1.add(21);
dataList1.add(22);
dataList1.add(43);
dataList1.add(25);
dataList1.add(2);
ArrayList<Integer> dataList2 = new ArrayList<Integer>();
dataList2.add(65);
dataList2.add(35);
dataList2.add(25);
dataList2.add(22);
dataList2.add(2);
dataList2.add(65);
dataList2.add(35);
dataList2.add(25);
dataList2.add(22);
dataList2.add(43);
ArrayList<Integer> dataList3 = new ArrayList<Integer>();
dataList3.add(25);
dataList3.add(20);
dataList3.add(65);
dataList3.add(35);
dataList3.add(20);
dataList3.add(25);
dataList3.add(20);
dataList3.add(65);
dataList3.add(35);
dataList3.add(20);
ArrayList<Integer> dataList4 = new ArrayList<Integer>();
dataList4.add(1);
dataList4.add(43);
dataList4.add(25);
dataList4.add(22);
dataList4.add(65);
dataList4.add(22);
dataList4.add(100);
dataList4.add(25);
dataList4.add(22);
dataList4.add(65);
ArrayList<Integer> dataList5 = new ArrayList<Integer>();
dataList5.add(35);
dataList5.add(22);
dataList5.add(22);
dataList5.add(43);
dataList5.add(99);
dataList5.add(35);
dataList5.add(22);
dataList5.add(22);
dataList5.add(43);
dataList5.add(25);
dataList5.add(35);
dataList5.add(22);
dataList5.add(22);
dataList5.add(43);
dataList5.add(99);
dataList5.add(35);
dataList5.add(22);
dataList5.add(22);
dataList5.add(43);
dataList5.add(25);
dataList5.add(43);
dataList5.add(99);
dataList5.add(35);
dataList5.add(22);
dataList5.add(22);
dataList5.add(43);
dataList5.add(25);
dataList5.add(35);
dataList5.add(22);
dataList5.add(22);
dataList5.add(43);
dataList5.add(99);
dataList5.add(35);
dataList5.add(22);
dataList5.add(22);
dataList5.add(43);
dataList5.add(25);
ArrayList<ArrayList<Integer>> aaa=new ArrayList<ArrayList<Integer>>();
aaa.add(dataList5);
aaa.add(dataList4);
aaa.add(dataList3);
aaa.add(dataList2);
aaa.add(dataList1);
for (int i=0; i<dataList5.size(); i++){
test.add(String.valueOf(i+1));
}
lineView.setBottomTextList(test);
lineView.addDataList(aaa);
}
}